﻿

CREATE OR REPLACE FUNCTION HOTEL.FUNC_CORRELATIVO_TB_HABITACION()
  RETURNS "trigger" AS
$BODY$
DECLARE
	CORRELATIVO NUMERIC(20,0);
	INCREMENTO NUMERIC(20,0);
BEGIN
--OBTENEMOS EL MAXIMO CODIGO DE LA TABLA  Y LO ALMACENAMOS
--EN LA VARIBALE DECLARADA CORRELATIVO
SELECT INTO CORRELATIVO MAX(ID_HABITACION::NUMERIC) FROM HOTEL.TB_HABITACION; 

--PREGUNTAMOS SI LA FUNCION NO SE HA EJECUTADO ALMACENAMOS 1
IF NOT FOUND THEN
   NEW.ID_HABITACION =  1;
ELSE
    IF CORRELATIVO IS NULL THEN -- PREGUNTA SI EL DATO OBTENENIDO ES NULL O ES EL PRIMER REGISTRO QUE SE VA HA INSERTAR
        NEW.ID_HABITACION = 1;--ASIGNAMOS EL PRIMER REGISTRO 
    ELSE
	
        NEW.ID_HABITACION = CORRELATIVO + 1;--ALMACENAMOS LOS CORRELATIVOS INCREMENTABLES
    END IF;
END IF;
RETURN NEW;
END;$BODY$
  LANGUAGE 'plpgsql' VOLATILE;

--CREAMOS EL TREGGER  A LA FUNCION VENTAS.GEN_CORRELATIVO_CLIENTES() QUE HEMOS CREADO EL CORRELATIVO DE CLIENTES
  CREATE TRIGGER TRIG_CORRELATIVO_FUNC_CORRELATIVO_TB_HABITACION
  BEFORE INSERT
  ON HOTEL.TB_HABITACION
  FOR EACH ROW
  EXECUTE PROCEDURE HOTEL.FUNC_CORRELATIVO_TB_HABITACION();


